package com.xiangwei.util;

import java.math.BigDecimal;
import java.util.ArrayList;
import java.util.List;


public class NumUtil {
	/**
	 * 生成固定数量的中奖二维码id
	 * 
	 * @param max 最大值
	 * @param min 最小值
	 * @param mun 生成多少个
	 * */
	public static List<Integer> getResult(Integer Max,Integer Min,Integer num){
		ArrayList<Integer> list = new ArrayList<Integer>();
		while(true){
			int n = (int) Math.round(Math.random()*(Max-Min)+Min);
			if (!list.contains(n)) {
				list.add(n);
			}
			if (list.size()==num)
				break;
		}
		return list;
		
	}
	/**
	 * excl表格  String 转long
	 * @author Yanleixin
	 * @param startCode 
	 * @return
	 * */
	public static Long returnCode(String startCode){
		long n = 10;
		double num = 0;
		try {
			String lowerCase = startCode.toLowerCase();
			int length = lowerCase.indexOf('e');
			if (length>0) {
				String s = (String) startCode.subSequence(length+1, startCode.length());
				int i = Integer.parseInt(s);
				if (i>1) {
					for (int j = 1; j < i; j++) {
						n=n*10;
					}
					/**
					 * 修改数据类型精度
					 * double*long
					 * 2015.12.8
					 * */
					num = Double.parseDouble(startCode.substring(0,length));
					BigDecimal bignum = new BigDecimal(Double.toString(num));
					BigDecimal bign = new BigDecimal(n);
					n = bignum.multiply(bign).longValue();
				}else{
					num = Double.parseDouble(startCode.substring(0,length));
					BigDecimal bignum = new BigDecimal(Double.toString(num));
					BigDecimal bign = new BigDecimal(n);
					n = bignum.multiply(bign).longValue();
				}
			}else{
				return Long.valueOf(startCode);
			}
		} catch (Exception e) {
			return Long.valueOf(startCode);
		}
		return n;
	}
	
	/** 
	 * 随机指定范围内N个不重复的数 
	 * 利用HashSet的特征，只能存放不同的值 
	 * @param min 指定范围最小值 
	 * @param max 指定范围最大值 
	 * @param n 随机数个数 
	 * @param HashSet<Integer> set 随机数结果集 
	 */  
//	   public static void randomSet(int min, int max, int n, List<QrcodeHb> set) {  
//		   int size = set.size();
//	       if (n > (max - min + 1) || max < min) {  
//	           return;  
//	       }  
//	       for (int i = 0; i < n; i++) {  
//	           // 调用Math.random()方法  
//	           int num = (int) (Math.random() * (max - min+1)) + min;  
//	           set.add(num);// 将不同的数存入HashSet中  
//	       }  
//	       int setSize = set.size()-size;  
//	       // 如果存入的数小于指定生成的个数，则调用递归再生成剩余个数的随机数，如此循环，直到达到指定大小  
//	       if (setSize < n) {  
//	        randomSet(min, max, n - setSize, set);// 递归  
//	       }  
//	   }  
}
